package com.haixiaoke.saas.apartment.service;

import com.haixiaoke.saas.apartment.domain.CalendarPrice;
import com.haixiaoke.saas.apartment.domain.HousingAllocation;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 价格日历Service接口
 *
 * @author panda
 * @date 2024-03-29
 */
public interface ICalendarPriceService {
    /**
     * 查询价格日历
     *
     * @param id 价格日历主键
     * @return 价格日历
     */
    CalendarPrice selectCalendarPriceById(Long id);

    /**
     * 查询价格日历列表
     *
     * @param calendarPrice 价格日历
     * @return 价格日历集合
     */
    List<CalendarPrice> selectCalendarPriceList(CalendarPrice calendarPrice);

    /**
     * 新增价格日历
     *
     * @param calendarPrice 价格日历
     * @return 结果
     */
    int insertCalendarPrice(CalendarPrice calendarPrice);

    /**
     * 修改价格日历
     *
     * @param calendarPrice 价格日历
     * @return 结果
     */
    int updateCalendarPrice(CalendarPrice calendarPrice);

    /**
     * 批量删除价格日历
     *
     * @param ids 需要删除的价格日历主键集合
     * @return 结果
     */
    int deleteCalendarPriceByIds(Long[] ids);

    /**
     * 删除价格日历信息
     *
     * @param id 价格日历主键
     * @return 结果
     */
    int deleteCalendarPriceById(Long id);

    /**
     * 查询房间下指定时间范围的价格日历集合
     */
    List<HousingAllocation> selectCalendarPriceListByAllocation(HousingAllocation allocation);

    int updateBatchCalendarPrice(CalendarPrice calendarPrice);

    /**
     * 根据房屋id集合查询今天的价格日历价格
     * @param houseIds
     * @return
     */
    Map<String, Map<String, Object>> selectTodayPriceByHouseIds(List<String> houseIds);

    /**
     *
     * @param allocationId  房屋配置id
     * @param houseId       房屋id
     * @param startTime     开始时间
     * @param endTime       结束时间
     * @param isContain     结束时间是否包括
     * @return
     */
    List<CalendarPrice> selectCalendarPriceListByTime(Long allocationId, String houseId, Date startTime, Date endTime,Boolean isContain);

    /**
     * 获取指定范围的价格
     * @param calendarPrice
     * @return
     */
    List<CalendarPrice> getPriceList(CalendarPrice calendarPrice);
}
